]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
[misc] add fileUtils.listDirAsync
authorMaxim Ermilov <zaspire@rambler.ru>
Thu, 30 Sep 2010 21:08:22 +0000 (01:08 +0400)
committerMaxim Ermilov <zaspire@rambler.ru>
Thu, 30 Sep 2010 21:08:22 +0000 (01:08 +0400)
Request information for a files from the directory asynchronously.
https://bugzilla.gnome.org/show_bug.cgi?id=623708

js/Makefile.am
js/misc/fileUtils.js [new file with mode: 0644]

index 512be0130e19c1e51e91633699ff4d49d2c2bb23..f35026e81aea3e1b3feb3d5e2fbd3499717d9d52 100644 (file)
@@ -3,6 +3,7 @@ jsdir = $(pkgdatadir)/js
 
 nobase_dist_js_DATA =  \
        misc/docInfo.js         \
+       misc/fileUtils.js       \
        misc/format.js          \
        misc/gnomeSession.js    \
        misc/params.js          \
diff --git a/js/misc/fileUtils.js b/js/misc/fileUtils.js
new file mode 100644 (file)
index 0000000..4110041
--- /dev/null
@@ -0,0 +1,22 @@
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+
+function listDirAsync(file, callback) {
+    let allFiles = [];
+    file.enumerate_children_async(Gio.FILE_ATTRIBUTE_STANDARD_NAME,
+                                  Gio.FileQueryInfoFlags.NONE,
+                                  GLib.PRIORITY_LOW, null, function (obj, res) {
+        let enumerator = obj.enumerate_children_finish(res);
+        function onNextFileComplete(obj, res) {
+            let files = obj.next_files_finish(res);
+            if (files.length) {
+                allFiles = allFiles.concat(files);
+                enumerator.next_files_async(100, GLib.PRIORITY_LOW, null, onNextFileComplete);
+            } else {
+                enumerator.close(null);
+                callback(allFiles);
+            }
+        }
+        enumerator.next_files_async(100, GLib.PRIORITY_LOW, null, onNextFileComplete);
+    });
+}